#ifndef BOMBERMAN_H_
#define BOMBERMAN_H_
#include "Aliado.h"
#include "Coordenada.h"
#include "BombaBomberman.h"
#include "IOcupante.h"
#include <string>

using std::string;

class Bomberman: public Aliado{
private:
    BombaBomberman bomba;
    int tiempoInmunidad;
    int vidasRestantes;
    /* Respawn si pierde una vida. */
    bool respawn;
    /* Indica si hay una bomba creada o no.*/
    bool bombaCreada;
    /* Disminuye en 1 la cantidad de vidas. Le da inmunidad para usar
     * la nueva vida o lo declara como muerto si no tiene mas vidas. */
    void restarVida();
	

public:
    Bomberman();
    /* Constructor. Setea la cantidad de vidas restantes. */
    Bomberman(Coordenada c);
    /* Destructor */
    ~Bomberman();
    /* Devuelve la cantidad de vidas restantes. */
    int getVidasRestantes();
    /* Vuelve a setear la cantidad de vidas iniciales para un nuevo nivel. */
    void resetVidas();
    /* Ataca. */
    void atacar();
    /* Setea la direccion del evento.*/
    void setDireccion(string dir);
    /* Le asigna true al atributo bombaCreada.*/
    void crearBomba();
    /* Resta una vida y le aplica inmunidad. */
    void colisionarConBombaPlanta();
    void colisionarConZombie();
    void colisionarCon(IOcupante* ocupante);
    void colisionarConBomberman(IOcupante* bomberman);
    BombaBomberman* colocarBomba();
    void recibirExplosion();
    bool respawnear();
};

#endif